#pragma once
#include "GradientBrushSpan.h"
#include "CMILMatrix.h"


class CLinearGradientBrush;

class CLinearGradientBrushSpan :
	public CGradientBrushSpan
{
private: 
	CLinearGradientBrushSpan();
public: 
	virtual ~CLinearGradientBrushSpan();
	static HRESULT GetBrushSpan(const CMILMatrix * pWorldTransform, const struct XRECTF_WH * pBrushBounds, CLinearGradientBrush * pBrush, XUINT32 generateGradientTexture, struct IBrushSpan * * ppSpan);
	virtual HRESULT UpdateTexture(enum XcpColorInterpolationMode nInterpolate);
private: 
	virtual HRESULT SetBrush(const CMILMatrix * pWorldTransform, const struct XRECTF_WH * pBrushBounds, CBrush * pBrush);
	virtual XINT32 SolidColor(XUINT32 nCPUCore, XINT32 nY, XUINT32 * pPargb);
	virtual void GenerateColors(struct GENCOLORSDATA * pGCD);
public: 
	XUINT32 * GetArgbPixels();
	CMILMatrix m_deviceIPCtoGradientTextureHPC;

};
